package com.rockontrol.ele.service.impl;

import java.util.List;

import org.apache.log4j.Logger;

import com.rksp.util.StringUtil;
import com.rockontrol.ele.service.MaUseSvc;
import com.rockontrol.ele.service.model.dbtransaction.MaUseTrans;
import com.rockontrol.ele.service.skeleton.MaUseSvcSkeleton;
import com.rockontrol.ele.vo.*;
import com.rockontrol.ele.pojo.*;

public class MaUseSvcImpl extends MaUseSvcSkeleton implements MaUseSvc{
	private static Logger logger=Logger.getLogger(MaUseSvcImpl.class);
	private MaUseTrans maUseTrans;
    /**
     * 创建物资回收单
     * @param Ma回收单 er_
     * @return String 回收单ID,  NULL 失败
     */
    public String createMaRecover(Ma回收单 er_){
    	try {
			return maUseTrans.serviceCreateMaRecover(er_);
		} catch (Exception e) {
			logger.error(e.getMessage(),e);
			return null;
		}
    }
    
    /**
     * 获取物资回收单
     * @param String id_
     * @return     Ma物资回收单回收单对象,  NULL 失败
     */
    public Ma回收单 getMaRecover(String id_){
    	try {
    		Ma回收单 ma回收单=(Ma回收单) service.findObj(Ma回收单.class, id_);
    		if("设备".equals(ma回收单.get回收类型())){
    			ma回收单.setEqDetails(service.findObjsHQL("from Ma设备回收明细 a where a.回收单id='"+id_+"'"));
    		}
    		if("材料".equals(ma回收单.get回收类型())){
    			ma回收单.setMaDetails(service.findObjsHQL("from Ma材料回收明细 a where a.回收单id='"+id_+"'"));
    		}
    		if("办公用品".equals(ma回收单.get回收类型())){
    			ma回收单.setThDetails(service.findObjsHQL("from Ma综合物品回收明细 a where a.回收单id='"+id_+"'"));
    		}
			return ma回收单;
		} catch (Exception e) {
			logger.error(e.getMessage(),e);
			return null;
		}
    }
    
    /**
     * 根据查询条件获取物资回收单集
     * @param op_
     * @return     List<Ma物资回收单> 回收单对象集,  NULL 失败
     */
    public List<Ma回收单> getMaRecovers(MaRecoverCdt op_){
    	try {
			return service.findObjsHQL(getMaRecoversSql(op_));
		} catch (Exception e) {
			logger.error(e.getMessage(),e);
			return null;
		}
    }
    
    /**
     * 根据查询条件分页获取物资回收单集
     * @param op_
     * @return     List<Ma物资回收单> 回收单对象集,  NULL 失败
     */
    public String pageInitGetMaRecovers(MaRecoverCdt op_,String roll){
    	try {
			return pageFind(roll,getMaRecoversSql(op_));
		} catch (Exception e) {
			logger.error(e.getMessage(),e);
			return null;
		}
    }
    
    private String getMaRecoversSql(MaRecoverCdt op_){
    	StringBuffer sql=new StringBuffer();
    	sql.append("from Ma回收单 a where 1=1 ");
    	if(op_!=null){
    		if(!StringUtil.isEmpty(op_.get回收类型())){
    			sql.append(" and a.回收类型 ='").append(op_.get回收类型()).append("'");
    		}
    		if(!StringUtil.isEmpty(op_.get使用单位())){
    			sql.append(" and a.使用单位 ='").append(op_.get使用单位()).append("'");
    		}
    		if(!StringUtil.isEmpty(op_.get回收状态())){
    			sql.append(" and a.审批状态 ='").append(op_.get回收状态()).append("'");
    		}
    		if(!StringUtil.isEmpty(op_.get申请单位())){
    			sql.append(" and a.回收单位 ='").append(op_.get申请单位()).append("'");
    		}
    		if(!StringUtil.isEmpty(op_.get申请时间开始())){
    			sql.append(" and a.录入时间 >=to_date('").append(op_.get申请时间开始()).append(" 00:00:00','yyyy-mm-dd hh24:mi:ss')");
    		}
    		if(!StringUtil.isEmpty(op_.get申请时间结束())){
    			sql.append(" and a.录入时间 <=to_date('").append(op_.get申请时间结束()).append(" 23:59:59','yyyy-mm-dd hh24:mi:ss')");
    		}
    		if(!StringUtil.isEmpty(op_.get单据编号())){
    			sql.append(" and a.单据编号  like'%").append(op_.get单据编号()).append("%'");
    		}
    	}
    	return sql.toString();
    }
    /**
     * 修改设备回收单
     * @param er_
     * @return True 成功,   False 失败
     */
    public Boolean updateMaRecover(Ma回收单 er_){
    	try {
			return maUseTrans.serviceUpdateMaRecover(er_);
		} catch (Exception e) {
			logger.error(e.getMessage(),e);
			return false;
		}
    }
    
    /**
     * 删除物资回收单
     * @param id_
     * @return True 成功,   False 失败
     */
    public Boolean deleteMaRecover(String id_){

    	try {
			return maUseTrans.serviceDeleteMaRecover(id_);
		} catch (Exception e) {
			logger.error(e.getMessage(),e);
			return false;
		}
    }
    
    /**
     * 创建物资报废信息
     * @param es_
     * @return String 报废信息ID,  NULL 失败
     */
    public String createMaScrap(Ma报废单 es_){
    	try {
			return maUseTrans.serviceCreateMaScrap(es_);
		} catch (Exception e) {
			logger.error(e.getMessage(),e);
			return null;
		}
    }
    
    /**
     * 获取一个物资报废信息
     * @param id_
     * @return Ma物资报废信息报废信息,  NULL 失败
     */
    public Ma报废单 getMaScrap(String id_){
    	try {
    		Ma报废单 ma报废单=(Ma报废单) service.findObj(Ma报废单.class, id_);
    		if("设备".equals(ma报废单.get报废类型())){
    			ma报废单.setEqBfList(service.findObjsHQL("from Ma设备报废明细 a where a.单据id='"+id_+"'"));
    		}
    		if("材料".equals(ma报废单.get报废类型())){
    			ma报废单.setMaBfList(service.findObjsHQL("from Ma材料报废 a where a.单据id='"+id_+"'"));
    		}
    		return ma报废单;
		} catch (Exception e) {
			logger.error(e.getMessage(),e);
			return null;
		}
    }
    
    /**
     * 获取物资报废信息集
     * @param op_
     * @return List<Ma物资报废信息> 报废信息集,  NULL 失败
     */
    public List<Ma报废单> getMaScraps(MascrapCdt op_){
    	try {
			return service.findObjsHQL(getMaScrapsSql(op_));
		} catch (Exception e) {
			logger.error(e.getMessage(),e);
			return null;
		}
    }
    
    /**
     * 分页获取物资报废信息集
     * @param op_
     * @return List<Ma物资报废信息> 报废信息集,  NULL 失败
     */
    public String pageInitGetMaScraps(MascrapCdt op_,String roll){
    	try {
			return pageFind(roll,getMaScrapsSql(op_));
		} catch (Exception e) {
			logger.error(e.getMessage(),e);
			return null;
		}
    }
    
     private String  getMaScrapsSql(MascrapCdt op_){
    	 StringBuffer sql=new StringBuffer();
    	 sql.append("from Ma报废单 a where 1=1 ");
    	 if(op_!=null){
    		 if(!StringUtil.isEmpty(op_.get报废类型())){
    			 sql.append(" and a.报废类型 ='").append(op_.get报废类型()).append("'");
    		 }
    		 if(!StringUtil.isEmpty(op_.get计划状态())){
    			 sql.append(" and a.审批状态 ='").append(op_.get计划状态()).append("'");
    		 }
    		 if(!StringUtil.isEmpty(op_.get使用单位())){
    			 sql.append(" and a.使用单位 ='").append(op_.get使用单位()).append("'");
    		 }
    		 if(!StringUtil.isEmpty(op_.get开始报废时间())){
    			 sql.append(" and a.报废日期 >=to_date('").append(op_.get开始报废时间()).append(" 00:00:00','yyyy-mm-dd hh24:mi:ss')");
    		 }
    		 if(!StringUtil.isEmpty(op_.get结束报废时间())){
    			 sql.append(" and a.报废日期 <=to_date('").append(op_.get结束报废时间()).append(" 23:59:59','yyyy-mm-dd hh24:mi:ss')");
    		 }
    	 }
    	 return sql.toString();
     }
    /**
     * 修改物资报废信息
     * @param es_
     * @return True 成功,   False 失败
     */
    public Boolean updateMaScrap(Ma报废单 es_){
    	try {
			return maUseTrans.serviceUpdateMaScrap(es_);
		} catch (Exception e) {
			logger.error(e.getMessage(),e);
			return false;
		}
    }
    
    /**
     * 删除报废信息
     * @param id_
     * @return True 成功,   False 失败
     */
    public Boolean deleteMaScrap(String id_){
    	try {
			return maUseTrans.serviceDeleteMaScrap(id_);
		} catch (Exception e) {
			logger.error(e.getMessage(),e);
			return false;
		}
    }
    
    /**
     * 保存物资报废审批信息
     * @param ea_
     * @return True 成功,   False 失败
     */
    public Boolean createMaScrapApporve(Ma报废单 ea_ ){
    	return null;
    }
    
    /**
     * 确认报废信息生效，修改相应设备的状态为报废
     * @param id_
     * @return  True 成功,   False 失败
     */
    public Boolean confirmMaScrap(String id_){
    	try {
			return maUseTrans.serviceConfirmMaScrap(id_);
		} catch (Exception e) {
			logger.error(e.getMessage(),e);
			return null;
		}
    }
    
    /**
     * 创建物资移交单
     * @param et_
     * @return String 移交单ID,  NULL 失败
     */
    public String createMaTransfer(Ma移交单 et_){
    	try {
			return maUseTrans.serviceCreateMaTransfer(et_);
		} catch (Exception e) {
			logger.error(e.getMessage(),e);
			return null;
		}
    }

	public Ma移交单 getTheMaTransfer(String id_) {
		try {
			Ma移交单 ma移交单=(Ma移交单) service.findObj(Ma移交单.class, id_);
			if("设备".equals(ma移交单.get移交类型())){
				ma移交单.setEqList(service.findObjsHQL("from Ma设备移交明细 a where a.移交单id='"+id_+"'"));
			}
			if("材料".equals(ma移交单.get移交类型())){
				ma移交单.setMaList(service.findObjsHQL("from Ma材料移交 a where a.移交单id='"+id_+"'"));
			}
			if("办公用品".equals(ma移交单.get移交类型())){
				ma移交单.setThingList(service.findObjsHQL("from Ma办公用品移交明细 a where a.移交单id='"+id_+"'"));
			}
			return ma移交单;
		} catch (Exception e) {
			logger.error(e.getMessage(),e);
			return null;
		}
	}

    
    /**
     * 根据移交单查询条件获取物资移交信息集
     * @param op_
     * @return List<Ma移交单> 移交单集,  NULL 失败
     */
    public List<Ma移交单> getMaTransfers(MaTransferCdt op_){
    	try {
			return service.findObjsHQL(getMaTransfersSql(op_));
		} catch (Exception e) {
			logger.error(e.getMessage(),e);
			return null;
		}
    }
    
    /**
     * 根据移交单查询条件获取物资移交信息集
     * @param op_
     * @return List<Ma移交单> 移交单集,  NULL 失败
     */
    public String pageInitGStringetMaTransfers(MaTransferCdt op_,String roll){
    	try {
			return pageFind(roll,getMaTransfersSql(op_));
		} catch (Exception e) {
			logger.error(e.getMessage(),e);
			return null;
		}
    }
    
    private String getMaTransfersSql(MaTransferCdt op_){
    	StringBuffer sql=new StringBuffer();
    	sql.append("from Ma移交单 a where 1=1 ");
   	 if(op_!=null){
   		 if(!StringUtil.isEmpty(op_.get移交类型())){
   			 sql.append(" and a.移交类型 ='").append(op_.get移交类型()).append("'");
   		 }
   		 if(!StringUtil.isEmpty(op_.get调入单位())){
   			 sql.append(" and a.调入单位 ='").append(op_.get调入单位()).append("'");
   		 }
   		 if(!StringUtil.isEmpty(op_.get调出单位())){
   			 sql.append(" and a.调出单位 ='").append(op_.get调出单位()).append("'");
   		 }
   		 if(!StringUtil.isEmpty(op_.get调拨状态())){
   			 sql.append(" and a.移交状态 ='").append(op_.get调拨状态()).append("'");
   		 }
   		 if(!StringUtil.isEmpty(op_.get开始调拨时间())){
   			 sql.append(" and a.调入日期 >=to_date('").append(op_.get开始调拨时间()).append(" 00:00:00','yyyy-mm-dd hh24:mi:ss')");
   		 }
   		 if(!StringUtil.isEmpty(op_.get结束调拨时间())){
   			 sql.append(" and a.调入日期 <=to_date('").append(op_.get结束调拨时间()).append(" 23:59:59','yyyy-mm-dd hh24:mi:ss')");
   		 }
   	 }
    	return sql.toString();
    }
    /**
     * 修改物资移交单
     * @param et_
     * @return True 成功,   False 失败
     */
    public Boolean updateMaTransfer(Ma移交单 et_){
    	try {
			return maUseTrans.serviceUpdateMaTransfer(et_);
		} catch (Exception e) {
			logger.error(e.getMessage(),e);
			return false;
		}
    }
    
    /**
     * 根据移交单ID删除物资移交单
     * @param id_
     * @return  True 成功,   False 失败
     */
    public Boolean deleteMaTransfer(String id_){
    	try {
			return maUseTrans.serviceDeleteMaTransfer(id_);
		} catch (Exception e) {
			logger.error(e.getMessage(),e);
			return false;
		}
    }
    
    /**
     * 创建物资维修信息
     * @param es_
     * @return     String 维修信息ID, NULL 失败
     */
    public String createMaRepair(Ma维修单 es_){
    	try {
			return maUseTrans.serviceCreateMaRepair(es_);
		} catch (Exception e) {
			logger.error(e.getMessage(),e);
			return null;
		}
    }
    
    /**
     * 获取一个物资维修信息
     * @param id_
     * @return     Ma物资维修信息,  NULL 失败
     */
    public Ma维修单 getMaRepair (String id_){
    	try {
    		Ma维修单 ma维修单=(Ma维修单) service.findObj(Ma维修单.class, id_);
    		ma维修单.setClwxList(service.findObjsHQL("from Ma材料维修 a where a.维修计划id='"+id_+"'"));
			return ma维修单;
		} catch (Exception e) {
			logger.error(e.getMessage(),e);
			return null;
		}
    }
    
    /**
     * 获取物资维修信息集
     * @param op_
     * @return List<Ma物资维修信息> 维修信息集,  NULL 失败
     */
    public List<Ma维修单> getMaRepairs(MarepairCdt op_){
    	try {
			return service.findObjsHQL(getMaRepairsSql(op_));
		} catch (Exception e) {
			logger.error(e.getMessage(),e);
			return null;
		}
    }
    
    /**
     * 分页获取物资维修信息集
     * @param op_
     * @return List<Ma物资维修信息> 维修信息集,  NULL 失败
     */
    public String pageInitGetMaRepairs(MarepairCdt op_,String roll){
    	try {
			return pageFind(roll,getMaRepairsSql(op_));
		} catch (Exception e) {
			logger.error(e.getMessage(),e);
			return null;
		}
    }
    
    private String getMaRepairsSql(MarepairCdt op_){
    	StringBuffer sql=new StringBuffer("from Ma维修单 a where 1=1 ");
    	if(op_!=null){
    		if(!StringUtil.isEmpty(op_.get单据编号())){
    			sql.append(" and a.单据编号 ='").append(op_.get单据编号()).append("' ");
    		}
    		if(!StringUtil.isEmpty(op_.get申请单位())){
    			sql.append(" and a.申请单位 like '%").append(op_.get申请单位()).append("%' ");
    		}
    		if(!StringUtil.isEmpty(op_.get申请人())){
    			sql.append(" and a.申请人姓名 ='").append(op_.get申请人()).append("' ");
    		}
    		if(!StringUtil.isEmpty(op_.get开始时间())){
    			sql.append(" and a.申请时间 <=to_date('").append(op_.get开始时间()).append(" 00:00:00','yyyy-mm-dd hh24:mi:ss') ");
    		}
    		if(!StringUtil.isEmpty(op_.get结束时间())){
    			sql.append(" and a.申请时间 >=to_date('").append(op_.get结束时间()).append(" 23:59:59','yyyy-mm-dd hh24:mi:ss') ");
    		}
    	}
    	return sql.toString();
    }
    /**
     * 修改物资维修信息
     * @param es_
     * @return     True 成功,   False 失败
     */
    public Boolean updateMaRepair (Ma维修单 es_){
    	try {
			return maUseTrans.serviceUpdateMaRepair(es_);
		} catch (Exception e) {
			logger.error(e.getMessage(),e);
			return false;
		}
    }
    
    /**
     * 获取一个物资维修信息
     * @param id_
     * @return   True 成功,   False 失败
     */
    public Boolean deleteMaRepair(String id_){
    	try {
			return maUseTrans.serviceDeleteMaRepair(id_);
		} catch (Exception e) {
			logger.error(e.getMessage(),e);
			return false;
		}
    }
    
    /**
     *分页接口
     *@author 杨晶
     *@version 1.0, Sat Mar 31 00:00:00 CST 2012
     *@param 页数和分页参数
     *@return 
     */
     public String pageNumMaUse(Integer num,String roll){
     	try {
			return pageNum(roll, num);
		} catch (Exception e) {
			logger.error(e.getMessage());
			return null;
		}
     }

	public MaUseTrans getMaUseTrans() {
		return maUseTrans;
	}

	public void setMaUseTrans(MaUseTrans maUseTrans) {
		this.maUseTrans = maUseTrans;
	}

    public Ma回收单 getEqRecoverByBindId(String bindid){
        try {
            Ma回收单 ma回收单=(Ma回收单)service.findObjsHQL("from Ma回收单 hs where hs.bindId='"+bindid+"'").get(0);
            if(ma回收单!=null){
            if("设备".equals(ma回收单.get回收类型())){
                ma回收单.setEqDetails(service.findObjsHQL("from Ma设备回收明细 a where a.回收单id='"+ma回收单.getOid()+"'"));
            }
            if("材料".equals(ma回收单.get回收类型())){
                ma回收单.setMaDetails(service.findObjsHQL("from Ma材料回收明细 a where a.回收单id='"+ma回收单.getOid()+"'"));
            }
            if("办公用品".equals(ma回收单.get回收类型())){
                ma回收单.setThDetails(service.findObjsHQL("from Ma综合物品回收明细 a where a.回收单id='"+ma回收单.getOid()+"'"));
            }
            return ma回收单;
            }else{
                return null;
            }
        } catch (Exception e) {
            logger.error(e.getMessage(),e);
            return null;
        }
    }

    public Ma报废单 getEqScrapByBindId(String bindid){
        try {
            Ma报废单 ma报废单=(Ma报废单) service.findObjsHQL("from Ma报废单 bf where bf.bindId='"+bindid+"'").get(0);
            if(ma报废单!=null){
            if("设备".equals(ma报废单.get报废类型())){
                ma报废单.setEqBfList(service.findObjsHQL("from Ma设备报废明细 a where a.单据id='"+ma报废单.getOid()+"'"));
            }
            if("材料".equals(ma报废单.get报废类型())){
                ma报废单.setMaBfList(service.findObjsHQL("from Ma材料报废 a where a.单据id='"+ma报废单.getOid()+"'"));
            }
            return ma报废单;
            }else{
                return null;
            }
        } catch (Exception e) {
            logger.error(e.getMessage(),e);
            return null;
        }
    }

    public Ma移交单 getEqTransferByBindId(String bindid){
        try {
            Ma移交单 ma移交单=(Ma移交单) service.findObjsHQL("from Ma移交单 yj where yj.bindId='"+bindid+"'").get(0);
            if(ma移交单!=null){
            if("设备".equals(ma移交单.get移交类型())){
                ma移交单.setEqList(service.findObjsHQL("from Ma设备移交明细 a where a.移交单id='"+ma移交单.getOid()+"'"));
            }
            if("材料".equals(ma移交单.get移交类型())){
                ma移交单.setMaList(service.findObjsHQL("from Ma材料移交 a where a.移交单id='"+ma移交单.getOid()+"'"));
            }
            if("办公用品".equals(ma移交单.get移交类型())){
                ma移交单.setThingList(service.findObjsHQL("from Ma办公用品移交明细 a where a.移交单id='"+ma移交单.getOid()+"'"));
            }
            return ma移交单;
            }else{
                return null;
            }
        } catch (Exception e) {
            logger.error(e.getMessage(),e);
            return null;
        }
    }

    public Ma维修单 getMaOverhaulByBindId(String bindid){
        try {
            Ma维修单 ma维修单=(Ma维修单) service.findObjsHQL("from Ma维修单 wx where wx.bindId='"+bindid+"'").get(0);
            if(ma维修单!=null){
                ma维修单.setClwxList(service.findObjsHQL("from Ma材料维修 a where a.维修计划id='"+ma维修单.getOid()+"'"));
                return ma维修单;
            }else{
                return null;
            }
        } catch (Exception e) {
            logger.error(e.getMessage(),e);
            return null;
        }
    }

    
   
}
